﻿Imports System.Configuration
Imports WiremetModel.Entities.OEM
Imports WiremetModel.Specification.GeneralSpecifications

Public Class frmLogowania

    Private _unitOfWork As UnitOfWork
    Private mvarDbHolder As clsDataBase
    ' Private mvarTmp As clsUzytkownik
    Private mvarUzytkownik As clsUzytkownik
    'wyzn_modyfikacji wyzn_odczytu          prawa
    '   1                   0       modyfikacji i odczytu
    '   0                   1       odczyt
    '   1                   1       admin
    '   0                   0       zadnych

    Public Sub New()

        Font = SystemFonts.MessageBoxFont

        ' To wywołanie jest wymagane przez projektanta.
        InitializeComponent()

        ' Dodaj inicjację po wywołaniu funkcji InitializeComponent().
        WczytajDanePolaczenia()
        SessionManager.InitializeSessionFactory(My.Settings.WiremetConnectionString)


        If UCase(Environ("ComputerName")) = VAR_COMPUTER_NAME_PRODUKCJA Then
            txtNazwaUzytkownika.Text = "produkcja"
        End If

        _unitOfWork = New UnitOfWork()
        mvarDbHolder = New clsDataBase(VAR_CONNECTION_PARAMETERS, VAR_ERROR_HANDLER)
    End Sub


    Private Sub Sprawdz()

        Try
            VAR_HASLO = txtHaslo.Text
            VAR_LOGIN = txtNazwaUzytkownika.Text

            mvarUzytkownik = CType(clsUzytkownik.Instance(), clsUzytkownik)


            Dim pracownikRepository As New Repository(Of Pracownik)(_unitOfWork)
            Dim userAccountCredentialsSpecification As New UserAccountCredentialsSpecification(Of Pracownik)(txtNazwaUzytkownika.Text, txtHaslo.Text)
            Dim pracownik As Pracownik = pracownikRepository.GetEntityMatching(userAccountCredentialsSpecification)

            If pracownik Is Nothing Then
                Throw New Exception("Nie ma takiego użytkownika.")
            End If
            User = pracownik


            Dim mainForm As New mdiMain()
            mainForm.Show()
            Me.Hide()

        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            txtNazwaUzytkownika.Focus()
        End Try
    End Sub

    Private Sub btnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOk.Click

        If txtNazwaUzytkownika.Text <> String.Empty And txtHaslo.Text <> String.Empty Then
            Sprawdz()
        Else
            MessageBox.Show("Podaj wszystkie dane", "WIREMET")
            txtNazwaUzytkownika.Focus()
        End If

    End Sub

    Private Sub btnAnuluj_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAnuluj.Click
        Me.Close()
    End Sub

    Private Sub frmLogowania_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        mvarDbHolder.Close()
        _unitOfWork.Dispose()
        SplashScreen.Dispose()
    End Sub

    Private Sub WczytajDanePolaczenia()

        VAR_ERROR_HANDLER = New clsErrorHandler
        VAR_CONNECTION_PARAMETERS = New clsConnectionParameters

        If Not VAR_CONNECTION_PARAMETERS.IsFullyDefined Then
            With VAR_CONNECTION_PARAMETERS
                .DBName = "wiremet"
                .DBServerIPAddress = "localhost"
                .DBServerPort = "5432"
                .ODBCDriverName = "PostgreSQL Unicode"
                .Password = "postgres"
                .UserName = "postgres"
                .SSLMode = ""
                .TemporaryFolder = ""
                .FileDataBase = ""
                .Save()
            End With
        End If

    End Sub

#Region "Tab"

    Private Sub txtNazwaUzytkownika_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles txtNazwaUzytkownika.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            txtHaslo.Focus()
        End If
    End Sub

    Private Sub txtHaslo_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtHaslo.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            btnOk.PerformClick()
        End If
    End Sub

#End Region

End Class